static BTS* fitnessProportionateSelector ( BTS* stations, uint numberOfBTS ) {
double perCapitaSum = 0.0;

// Calcul des revenus totaux
for ( uint i = 0; i < numberOfBTS; ++i )
  perCapitaSum += (stations[i].known) ? 0.0 : 
    (double)stations[i].incomes / (double)stations[i].subscribers;

if ( perCapitaSum == 0.0 ) {
  cerr << "No more stations..." << endl;
  return NULL;
}

double treshold = fmod ( rand(), perCapitaSum ) + 0;

// Parcours des stations
for ( uint i = 0; i < numberOfBTS; ++i ) {
  if ( !stations[i].known ) {

    // Modélisation du parcours de la roulette
    treshold -= (double)stations[i].incomes / (double)stations[i].subscribers;

    if ( treshold <= 0 ) return &stations[i];
  }
}

cerr << "ERROR." << endl;
return NULL;
}
